package com.example.appointment.service;

import com.example.appointment.dto.ActivityRegistrationDTO;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

/**
 * 活动报名服务接口
 */
public interface ActivityRegistrationService {
    
    /**
     * 用户报名活动
     */
    ActivityRegistrationDTO registerForActivity(Long activityId, Long userId);
    
    /**
     * 取消活动报名
     */
    void cancelRegistration(Long activityId, Long userId);
    
    /**
     * 提交活动评价
     */
    ActivityRegistrationDTO submitFeedback(Long activityId, Long userId, String feedback, Integer rating);
    
    /**
     * 获取用户的活动报名列表
     */
    List<ActivityRegistrationDTO> getUserRegistrations(Long userId);
    
    /**
     * 检查用户是否已报名活动
     */
    boolean isUserRegistered(Long activityId, Long userId);
    
    /**
     * 获取活动的报名人数
     */
    int getActivityRegistrationCount(Long activityId);
    
    /**
     * 分页获取活动的报名记录
     */
    Page<ActivityRegistrationDTO> getActivityRegistrations(Long activityId, Pageable pageable);
    
    /**
     * 获取活动的评价列表
     */
    List<ActivityRegistrationDTO> getActivityFeedbacks(Long activityId);
    
    /**
     * 标记用户是否参加了活动
     */
    void markAttendance(Long registrationId, boolean attended);
} 